Spring Cloud 之服务网关 Zuul (一) | 您所在的位置:网站首页 › spring cloud 编排 › Spring Cloud 之服务网关 Zuul (一) |
Spring Cloud 之服务网关 Zuul (一)
文章目录
诞生背景Zuul 能解决哪些问题简单案例创建 Eureka-server 工程创建 Zuul Server 工程创建 good-server 服务
路由配置简化配置映射到 url路由前缀路由通配符
诞生背景
微服务架构体现了面向服务开发的敏捷性. 很多公司开始重构应用, 拆解服务. 出现一个新的问题: 有时候完成某个业务, 需要到不同的主机和不同的端口上面调取接口. 服务多了以后, 这是一件很麻烦的过程. 逐渐诞生了一个面向服务治理、服务编排的组件–微服务网关 Zuul 能解决哪些问题Zuul 是从设备或者网站请求后端应用程序的一个大门. 为内部服务提供了可配置的对外 URL 到服务的映射关系, 基于 JVM的后端路由器: 认证和鉴权动态路由压力测试负载削减 简单案例项目结构 zhiqu |_ eureka-server |_ pom.xml |_ gateway-zuul |_ pom.xml |_ good-server |_ pom.xml 创建 Eureka-server 工程参考: https://blog.csdn.net/zjhcxdj/article/details/104637536 创建 Zuul Server 工程pom.xml 配置, 需要引入 Zuul 依赖 org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-netflix-zuulapplication.yml 配置 eureka: client: serverUrl: defaultZone: http://localhost:8761/eureka/ instance: lease-renewal-interval-in-seconds: 5 lease-expiration-duration-in-seconds: 15 perfer-in-address: true server: port: 8765 spring: application: name: gateway-zuul zuul: routes: good-server: path: /good-server/** serviceId: good-server最后 5 行配置的意思是, 把所有以 good-server 开头的 URL 映射到 good-server 这个服务上去. 即可以通过访问 gateway-zuul 服务, 间接的访问 good-server 服务 启动类, 要添加 @EnableZuulProxy 注解 @EnableAutoConfiguration @EnableDiscoveryClient @EnableZuulProxy public class ZuulServerApplication { public static void main(String[] args){ SpringApplication.run(ZuulServerApplication.class,args); } } 创建 good-server 服务pom 文件配置 org.springframework.cloud spring-cloud-starter-netflix-eureka-clientapplication.yml 配置 eureka: client: serverUrl: defaultZone: http://localhost:8761/eureka/ instance: lease-renewal-interval-in-seconds: 5 lease-expiration-duration-in-seconds: 15 perfer-in-address: true server: port: 8764 spring: application: name: good-server项目启动类 @SpringBootApplication public class GoodServerApplication { public static void main(String[] args) { SpringApplication.run(GoodServerApplication.class, args); } }写一个 Restful 接口 @RestController @RequestMapping("/goods") public class GoodController { @GetMapping("/{id}") public String getGood(@PathVariable("id") String id) { return "good"; } }测试 直接访问 good-server 服务 http://localhost:8764/goods/fdafda 返回: good 通过 gateway-zuul 服务间接访问 good-server 服务 http://localhost:8765/good-server/goods/fdafda 返回:good 当向 gateway-zuul 发送请求的时候, 网关会向 Eureka 拉取服务列表, 然后按照路由映射规则(url 前缀:good-server -> 服务id: good-server) 路由到相应的服务上去 路由配置 简化配置Zuul 的配置可以简化, 下面是 /good-server/** 请求映射到 good-server 服务的路由规则 zuul: routes: good-server: /good-server/**或者可以直接把映射规则和 serviceId 都去掉, Zuul 会生成默认的映射规则(good-server: /good-server/**): zuul: routes: good-server: # 等价于 => # zuul: # routes: # good-server: # path: /good-server/** # serviceId: good-server 映射到 url如果想映射大一个具体的物理地址, 把serviceId 替换成 url 就可以了 zuul: routes: good-server: path: /good-server/** url: http://localhost: 8764 # good-server 的地址 路由前缀一般做版本配置的时候, 会给所有的 url 加一个版本前缀: zuul: prefix: /v1 routes: good-server:这样请求路径会变成: /v1/joke-server/** 路由通配符 规则说明示例/**匹配任意数量的路径和字符/good-server/aa、/good-server/bb/cc/*匹配任意数量的字符/good-server/aa、/good-server/dddd/?匹配单个字符/good-server/a、/good-server/b |
CopyRight 2018-2019 实验室设备网 版权所有 |